home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / database / cff51b.arj / PERMTEST.C < prev    next >
C/C++ Source or Header  |  1993-10-22  |  3KB  |  141 lines

  1. /* PERMTEST.C */
  2. /* Copyright 1990, 1991, 1992, 1993 Norman D. Culver Ft. Lauderdale, FL */
  3. /*                    All Rights Reserved                                   */
  4.  
  5. #include <stdlib.h>
  6. #include "../cff.h"
  7.  
  8. static void perm_test();
  9. #define PACKSIZE 100
  10.  
  11. void
  12. main()
  13. {
  14.     cfport_settestflags(1);
  15.     cfinit("permtest",1024,"myfile.cff");
  16.     cfprintf("TEST OF PERMANENT OBJECTS -- mallocC(-n)\n");
  17.  
  18.     perm_test();
  19.  
  20.     cfexit();
  21.  
  22. } /* MAIN */
  23.  
  24. static void
  25. perm_test()
  26. {
  27. char **ptrs1[PACKSIZE];
  28. char **ptrs2[PACKSIZE];
  29. char **ptrs3[PACKSIZE];
  30. char **pp1;
  31. char **pp2;
  32. char **pp3;
  33. int i,j,errors=0;
  34.  
  35.     cfprintf("Begin perm_test\n");
  36.  
  37.     if(!cfisnew(PERMINFO))
  38.     {
  39.         /* The file containing permanent objects is not new.
  40.             Read in some pointers which were saved. The data
  41.             has already been loaded by cfinit(). */
  42.  
  43.         cfprintf("READ, CHECK and DELETE old data\n");
  44.         for(i = 0; i < PACKSIZE; ++i)
  45.             ptrs1[i] = ptrs2[i] = NULL;
  46.  
  47.         if(cfget(PERMINFO, "ptrs1", 5, ptrs1, sizeof(ptrs1)) < FOUND) {
  48.             cfprintf("Failed to get ptrs1\n");
  49.             return;
  50.         }
  51.         if(cfget(PERMINFO, "ptrs2", 5, ptrs2, sizeof(ptrs2)) < FOUND) {
  52.             cfprintf("Failed to get ptrs2\n");
  53.             return;
  54.         }
  55.  
  56.         for(i = 0; i < PACKSIZE; ++i)
  57.         {
  58.             if(!(pp1 = ptrs1[i])) {
  59.                 cfprintf("pp1 is NULL at i=%d\n", i);
  60.                 ++errors;
  61.                 continue;
  62.             }
  63.             if(!(pp2 = ptrs2[i])) {
  64.                 cfprintf("pp2 is NULL at i=%d\n", i);
  65.                 ++errors;
  66.                 continue;
  67.             }
  68.             for(j = 0; j < 100; ++j)
  69.             {
  70.                 if(pp1)
  71.                     if(!pp1[j] || (*(pp1[j]) != j)) {
  72.                         cfprintf("pp1 fails at i=%d j=%d pp1=%p pp1[j]=%p dat=%lx\n", i, j, pp1, pp1[j], *((long *)(pp1[j])));
  73.                         ++errors;
  74.                         break;
  75.                     }
  76.                 if(pp2)
  77.                     if(!pp2[j] || (*(pp2[j]) != j)) {
  78.                         cfprintf("pp2 fails at i=%d j=%d pp2=%p pp2[j]=%p dat=%lx\n", i, j, pp2, pp2[j], *((long *)(pp2[j])));
  79.                         ++errors;
  80.                         break;
  81.                     }
  82.             }
  83.         }
  84.  
  85.         freecat(-1);
  86.         freecat(-2);
  87.         cfprintf("READ, CHECK and DELETE FINISHED\n");
  88.     }
  89.     if(errors) {
  90.         cfprintf("Errors detected.\n");
  91.         exit(-1);
  92.     }
  93.     cfprintf("ENTER NEW DATA\n");
  94.     /* Enter new data */
  95.     for(i = 0; i < PACKSIZE; ++i)
  96.     {
  97.         if(!(ptrs1[i] = mallocC(-1, 100*sizeof(char *)))) {
  98.             cfprintf("Failed to mallocC for category #1 i=%d\n", i);
  99.             return;
  100.         }
  101.         if(!(ptrs2[i] = mallocC(-2, 100*sizeof(char *)))) {
  102.             cfprintf("Failed to mallocC for category #2 i=%d\n", i);
  103.             return;
  104.         }
  105.         if(!(ptrs3[i] = mallocC(-3, 100*sizeof(char *)))) {
  106.             cfprintf("Failed to mallocC for category #3 i=%d\n", i);
  107.             return;
  108.         }
  109.         pp1 = ptrs1[i];
  110.         pp2 = ptrs2[i];
  111.         pp3 = ptrs3[i];
  112.  
  113.         for(j = 0; j < 100; ++j)
  114.         {
  115.         char *p;
  116.             /* Bigtime waste of space */
  117.             if(!(p = pp1[j] = mallocC(-1, 1)))
  118.                 cfprintf("mallocC(-1,1) failed at i=%d j=%d\n", i,j);
  119.             *p = j;
  120.             if(!(p = pp2[j] = mallocC(-2, 1)))
  121.                 cfprintf("mallocC(-2,1) failed at i=%d j=%d\n", i,j);
  122.             *p = j;
  123.             if(!(p = pp3[j] = mallocC(-3, 1)))
  124.                 cfprintf("mallocC(-3,1) failed at i=%d j=%d\n", i,j);
  125.             *p = j;
  126.         }
  127.     }
  128.     freecat(-3); /* Throw away category 3 */
  129.  
  130.     /* Save the packs of pointers -- the data will be saved by cfexit() */
  131.  
  132.     if(cfreput(PERMINFO, "ptrs1", 5, ptrs1, sizeof(ptrs1), NULL) == NULL)
  133.         cfprintf("Failed to store ptrs1\n");
  134.     if(cfreput(PERMINFO, "ptrs2", 5, ptrs2, sizeof(ptrs2), NULL) == NULL)
  135.         cfprintf("Failed to store ptrs2\n");
  136.  
  137.     cfprintf("ENTER NEW DATA FINISHED\n");
  138.  
  139.     cfprintf("End perm_test\n");
  140. }
  141.